1. Field of the Invention
Embodiments of the present invention relate to computer systems.
2. Related Art
Contemporary computer systems have the capacity to execute more instructions than they actually execute in practice. Improvements in performance are limited by, for example, the latencies associated with accessing memory or input/output devices. Some of the excess capacity can be taken advantage of by executing two or more threads in parallel (commonly referred to as “multi-threading”). In simple terms, a set of computational resources are applied to a first thread until a long-latency event (e.g., a main memory access) is encountered, then the resources are applied to a second thread until another long-latency event is encountered, and so on. By switching execution from one thread to another, processor cycles that would otherwise be idle are instead put to use, realizing a gain in performance.